﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CommandLists.Model
{
    /// <summary>
    /// Параметры к CommandSequenceChangedHandler
    /// </summary>
    public class CommandSequenceChangedEventArgs
    {
        /// <summary>
        /// Номер такта, на котором произошло изменение.
        /// </summary>
        public int TactNumber { get; private set; }
        
        public CommandSequenceChangedEventArgs(int tactNumber)
        {
            TactNumber = tactNumber;
        }
    }

    /// <summary>
    /// Описывает метод, обрабатывающий событие изменения последовательности команд
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void CommandSequenceChangedHandler(object sender, CommandSequenceChangedEventArgs e);

    /// <summary>
    /// Параметры к CommandParameterChangedHandler
    /// </summary>
    public class CommandParameterChangedHandlerArgs
    {
        /// <summary>
        /// Команда, параметр который был изменён.
        /// </summary>
        public Command Source { get; private set; }
        /// <summary>
        /// Параметр, который был изменён.
        /// </summary>
        public CommandParameter ChangedParameter { get; private set; }

        public CommandParameterChangedHandlerArgs(Command source, CommandParameter parameter)
        {
            Source = source;
            ChangedParameter = parameter;
        }
    }

    /// <summary>
    /// Описывает метод, обрабатывающий событие изменения параметра команды.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    public delegate void CommandParameterChangedHandler(object sender, CommandParameterChangedHandlerArgs e);
}
